// ModifyStatTable.h : stores the variables modified in each statement.
// Author: Achyut P Balaji
//

#ifndef MODIFY_STAT_TABLE_H
#define MODIFY_STAT_TABLE_H
#include"../../SPA_Data_Types.h"

using namespace std;

typedef vector<VAR_INDEX> VAR_LIST;

class ModifyStatTable {
private:

	vector<VAR_LIST> tempVarModified;

	static ModifyStatTable *obj;
	ModifyStatTable();

	bool initialised;

public:

	static ModifyStatTable* getInstance();
	static ModifyStatTable* getFirstInstance();

	BOOLEAN addEntry(VAR_LIST varModified);
	BOOLEAN addEntry(STATEMENT_INDEX n,VAR_LIST varModified);

	BOOLEAN isModified(STATEMENT_INDEX n, VAR_INDEX ind);
	VAR_LIST* getVarModified(STATEMENT_INDEX n);
	
	void initialise();

};


#endif